package com.cook.mapper;

import com.cook.entity.Follows;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cook.vo.user.FollowVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author black-white spider
* @description 针对表【follows(用户关注关系表)】的数据库操作Mapper
* @createDate 2025-10-27 19:54:38
* @Entity com.cook.entity.Follows
*/
@Mapper
public interface FollowsMapper extends BaseMapper<Follows> {

    /**
     * 增加关注关系
     * @param followerId 关注者ID（当前用户）
     * @param followeeId 被关注者ID（要关注的人）
     * @return 影响行数
     */
    int addFollow(@Param("followerId") Long followerId, @Param("followeeId") Long followeeId);

    /**
     * 删除关注关系
     * @param followerId 关注者ID（当前用户）
     * @param followeeId 被关注者ID（要取消关注的人）
     * @return 影响行数
     */
    int deleteFollow(@Param("followerId") Long followerId, @Param("followeeId") Long followeeId);

    /**
     * 检查关注关系是否存在
     * @param followerId 关注者ID
     * @param followeeId 被关注者ID
     * @return 是否存在
     */
    int checkFollowExists(@Param("followerId") Long followerId, @Param("followeeId") Long followeeId);

    /**
     * 分页查询用户的关注列表
     * @param followerId 关注者ID
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 关注列表
     */
    List<FollowVO> selectFollowListByPage(@Param("followerId") Long followerId,
                                          @Param("offset") Integer offset,
                                          @Param("limit") Integer limit);

    /**
     * 查询用户的关注数量
     * @param followerId 关注者ID
     * @return 关注数量
     */
    int selectFollowCount(@Param("followerId") Long followerId);

    /**
     * 查询用户的粉丝列表（被谁关注）
     * @param followeeId 被关注者ID
     * @return 粉丝列表
     */
    List<FollowVO> selectFollowerList(@Param("followeeId") Long followeeId);

    /**
     * 查询用户的粉丝数量
     * @param followeeId 被关注者ID
     * @return 粉丝数量
     */
    int selectFollowerCount(@Param("followeeId") Long followeeId);
}



